package com.service.single.example.file;

import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * @Author: 一休
 * @Date: 2025/2/7
 */
public class GetDownloadPath {

    /**
     * 获取系统下载路径
     */
    public static String getDownloadPath() {
        String os = System.getProperty("os.name").toLowerCase();

        if (os.contains("win")) {
            // Windows 系统
            return System.getenv("USERPROFILE") + File.separator + "Downloads";
        }
        if (os.contains("mac")) {
            // macOS 系统
            return System.getProperty("user.home") + File.separator + "Downloads";
        }
        if (os.contains("nix") || os.contains("nux") || os.contains("aix")) {
            // Linux 系统
            String home = System.getProperty("user.home");
            File downloadsDir = new File(home, "Downloads");
            if (downloadsDir.exists() && downloadsDir.isDirectory()) {
                return downloadsDir.getAbsolutePath();
            }
            // 如果 Downloads 目录不存在，返回用户主目录
            return home;
        }
        // 如果无法识别操作系统，返回用户主目录
        return System.getProperty("user.home");
    }

    public static void downloadVideo(String videoUrl, String savePath) throws IOException {
        // 创建 URL 对象
        URL url = new URL(videoUrl);
        // 打开 HTTP 连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        // 设置请求方法为 GET
        connection.setRequestMethod("GET");

        // 获取输入流
        InputStream inputStream = connection.getInputStream();
        // 创建文件输出流
        FileOutputStream outputStream = new FileOutputStream(savePath);

        // 缓冲区大小
        byte[] buffer = new byte[4096];
        int bytesRead;
        // 循环读取数据并写入文件
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }

        // 关闭流
        outputStream.close();
        inputStream.close();
        // 断开连接
        connection.disconnect();
    }


    /**
     * 打开电脑默认播放器
     *
     * @param filePath 视频文件的路径
     */
    public static void playVideo(String filePath) {
        // 检查当前系统是否支持 Desktop 类的操作
        if (Desktop.isDesktopSupported()) {
            Desktop desktop = Desktop.getDesktop();
            try {
                // 创建表示视频文件的 File 对象
                File videoFile = new File(filePath);
                // 检查文件是否存在
                if (videoFile.exists()) {
                    // 调用系统默认程序打开视频文件
                    desktop.open(videoFile);
                } else {
                    System.out.println("视频文件不存在: " + filePath);
                }
            } catch (IOException e) {
                System.out.println("无法打开视频文件: " + e.getMessage());
            }
        } else {
            System.out.println("当前系统不支持 Desktop 类操作。");
        }
    }

    public static void main(String[] args) throws IOException {
        String downloadPath = getDownloadPath();
        System.out.println("系统下载路径为: " + downloadPath);
    }
}
